home *** CD-ROM | disk | FTP | other *** search
/ .net 2002 March / DotNetMagazine-Issue107-Coverdisc-NET107-02-03-PCMac.bin / pc / PC Software / picks / HTTrack / httrack-3.22-3.exe / {app} / src_win / WinHTTrack / DialogHtmlHelp.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-10-18  |  6.8 KB  |  270 lines

  1. // DialogHtmlHelp.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "DialogHtmlHelp.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. #include "htsbase.h"
  15.  
  16. extern HICON httrack_icon;
  17.  
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CDialogHtmlHelp dialog
  20.  
  21.  
  22. CDialogHtmlHelp::CDialogHtmlHelp(CWnd* pParent /*=NULL*/)
  23.     : CDialog(CDialogHtmlHelp::IDD, pParent)
  24. {
  25.   page="";
  26.     //{{AFX_DATA_INIT(CDialogHtmlHelp)
  27.     //}}AFX_DATA_INIT
  28. }
  29.  
  30.  
  31. void CDialogHtmlHelp::DoDataExchange(CDataExchange* pDX)
  32. {
  33.     CDialog::DoDataExchange(pDX);
  34.     //{{AFX_DATA_MAP(CDialogHtmlHelp)
  35.     //}}AFX_DATA_MAP
  36. }
  37.  
  38.  
  39. BEGIN_MESSAGE_MAP(CDialogHtmlHelp, CDialog)
  40.     //{{AFX_MSG_MAP(CDialogHtmlHelp)
  41.     ON_WM_SIZE()
  42.     ON_WM_CREATE()
  43.     ON_BN_CLICKED(IDC_BACK, OnBack)
  44.     ON_BN_CLICKED(IDC_FORWARD, OnForward)
  45.     ON_BN_CLICKED(IDC_STOP, OnStop)
  46.     ON_BN_CLICKED(IDC_RELOAD, OnReload)
  47.     ON_BN_CLICKED(IDC_HOME, OnHome)
  48.     ON_BN_CLICKED(ID_FILE_PRINT, OnFilePrint)
  49.     ON_WM_CLOSE()
  50.     //}}AFX_MSG_MAP
  51.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  52.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  53.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  54.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  55.     ON_COMMAND(ID_BUTTON_HOME,OnHome)
  56. END_MESSAGE_MAP()
  57.  
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CDialogHtmlHelp message handlers
  60.  
  61. BOOL CDialogHtmlHelp::OnInitDialog() 
  62. {
  63.     CDialog::OnInitDialog();
  64.   SetIcon(httrack_icon,false);
  65.   SetIcon(httrack_icon,true);
  66.   EnableToolTips(true);     // TOOL TIPS
  67.   SetForegroundWindow();   // yop en premier plan!
  68.  
  69.   strcpybuff(home,"file://");
  70.   {
  71.     char* a=home+strlen(home);
  72.     strcatbuff(home,AfxGetApp()->m_pszHelpFilePath);
  73.     a = home + strlen(home) -1;
  74.     while( (*a!='\\') && ((int) a > (int) home) ) a--;
  75.     if (*a=='\\') {
  76.       *(a+1)='\0';
  77.     }
  78.     strcatbuff(home,"HelpHtml\\");
  79.     strcpybuff(home_dir,home);
  80.     strcatbuff(home,"index.html");
  81.   }
  82.  
  83.   // crÈer
  84.   if (m_page.CreateFromStatic(IDC_HTMLVIEW, this)) {
  85.     m_page.SetToolBar(false);
  86.     m_page.SetMenuBar(false);
  87.     m_page.SetStatusBar(false);
  88.     m_page.SetRegisterAsBrowser(false);
  89.     m_page.SetFullScreen(false);
  90.     if (page.GetLength()==0)
  91.       OnHome();
  92.     else
  93.       Go(page);
  94.     UpdateWindow();
  95.   } else {
  96.     EndDialog(IDCANCEL);
  97.     if (!ShellExecute(NULL,"open",home+strlen("file://"),"","",SW_RESTORE))
  98.       AfxMessageBox(LANG(LANG_DIAL1));
  99.   }
  100.   return TRUE;  
  101. }
  102.  
  103. // Resize
  104. void CDialogHtmlHelp::OnSize(UINT nType, int cx, int cy) 
  105. {
  106.   CDialog::OnSize(nType, cx, cy);
  107.  
  108.   HWND ip = ::GetDlgItem(this->m_hWnd,IDC_HTMLVIEW);
  109.   if (ip) {
  110.     int w,h;
  111.     RECT rect;
  112.     ::GetWindowRect(ip,&rect);
  113.     // screen coord -> client coord
  114.     POINT a,b;
  115.     a.x=rect.left; a.y=rect.top; b.x=rect.right; b.y=rect.bottom;
  116.     ::ScreenToClient(this->m_hWnd,&a); ::ScreenToClient(this->m_hWnd,&b);
  117.     rect.left=a.x; rect.top=a.y; rect.right=b.x; rect.bottom=b.y;
  118.     w = max(cx - rect.left,320);
  119.     h = max(cy - rect.top,200);
  120.     ::SetWindowPos(ip,NULL,0,0,w,h,SWP_NOZORDER|SWP_NOMOVE|SWP_NOOWNERZORDER);
  121.     //base.OnSizeCallback(this,nType,cx,cy);
  122.   }
  123. }
  124.  
  125. int CDialogHtmlHelp::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  126. {
  127.     if (CDialog::OnCreate(lpCreateStruct) == -1)
  128.         return -1;
  129.  
  130.   /*
  131.   if (!m_wndToolBar.Create(this))
  132.         return -1;      // fail to create
  133.   if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  134.         return -1;      // fail to create
  135.  
  136.   // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  137.     m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  138.         CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  139.   */
  140.     
  141.     return 0;
  142. }
  143.  
  144. // help de l'help..
  145. // Appel aide
  146. BOOL CDialogHtmlHelp::OnHelpInfo2() {
  147.   return OnHelpInfo(NULL);
  148. }
  149.  
  150. BOOL CDialogHtmlHelp::OnHelpInfo(HELPINFO* dummy) 
  151. {
  152.   return true;
  153. }
  154.  
  155.  
  156. // Home
  157. void CDialogHtmlHelp::OnHome() {
  158.   m_page.Navigate2(home);
  159.   m_page.ShowWindow(SW_SHOW);
  160.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  161. }
  162.  
  163. void CDialogHtmlHelp::Go(CString st) {
  164.   if (st.Left(7)!="http://") {
  165.     char tempo[1024];
  166.     strcpybuff(tempo,home_dir);
  167.     strcatbuff(tempo,st);
  168.     m_page.Navigate2(tempo);
  169.   } else
  170.     m_page.Navigate2(st);
  171.   m_page.ShowWindow(SW_SHOW);
  172.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  173. }
  174.  
  175. void CDialogHtmlHelp::OnBack() 
  176. {
  177.   m_page.GoBack();
  178.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  179. }
  180.  
  181. void CDialogHtmlHelp::OnForward() 
  182. {
  183.   m_page.GoForward();
  184.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  185. }
  186.  
  187. void CDialogHtmlHelp::OnStop() 
  188. {
  189.   m_page.Stop();
  190.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  191. }
  192.  
  193. void CDialogHtmlHelp::OnReload() 
  194. {
  195.   m_page.Refresh();
  196.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  197. }
  198.  
  199. void CDialogHtmlHelp::OnFilePrint() 
  200. {
  201.   this->GetDlgItem(IDC_HTMLVIEW)->SendMessage(WM_COMMAND,ID_FILE_PRINT,NULL);
  202.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  203. }
  204.  
  205.  
  206. // ------------------------------------------------------------
  207. // TOOL TIPS
  208. //
  209. // ajouter dans le .cpp:
  210. // remplacer les deux Wid1:: par le nom de la classe::
  211. // dans la message map, ajouter
  212. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  213. // dans initdialog ajouter
  214. // EnableToolTips(true);     // TOOL TIPS
  215. //
  216. // ajouter dans le .h:
  217. // char* GetTip(int id);
  218. // et en generated message map
  219. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  220. BOOL CDialogHtmlHelp::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  221. {
  222.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  223.   UINT nID =pNMHDR->idFrom;
  224.   if (pTTT->uFlags & TTF_IDISHWND)
  225.   {
  226.     // idFrom is actually the HWND of the tool
  227.     nID = ::GetDlgCtrlID((HWND)nID);
  228.     if(nID)
  229.     {
  230.       char* st=GetTip(nID);
  231.       if (st != "") {
  232.         pTTT->lpszText = st;
  233.         pTTT->hinst = AfxGetResourceHandle();
  234.         return(TRUE);
  235.       }
  236.     }
  237.   }
  238.   return(FALSE);
  239. }
  240. char* CDialogHtmlHelp::GetTip(int ID)
  241. {
  242.   switch(ID) {
  243.     case IDCANCEL:   return LANG(LANG_B3); /*"Cancel","Annuler");*/ break;
  244.     case IDOK:       return LANG(LANG_B4); /*"Add this filter","Ajouter cette rËgle");*/ break;
  245.   }
  246.   return "";
  247. }
  248. // TOOL TIPS
  249. // ------------------------------------------------------------
  250.  
  251.  
  252. BOOL CDialogHtmlHelp::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  253. {
  254.     // TODO: Add your specialized code here and/or call the base class
  255.  
  256.   dwStyle|=(WS_OVERLAPPEDWINDOW);
  257.   dwStyle&=~(WS_CHILD);
  258.   pParentWnd=NULL;
  259.     return CDialog::Create(IDD, pParentWnd);
  260.   //ModifyStyleEx(WS_EX_TOPMOST,0);
  261.   //SetWindowPos(&wndBottom,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  262. }
  263.  
  264. /* Auto-destruction! */
  265. void CDialogHtmlHelp::OnClose() 
  266. {
  267.     ///CDialog::OnClose();
  268.     int r=CDialog::DestroyWindow();
  269. }
  270.